﻿//
//
/////////////////////////////////////////////////////////////////////////////

using System.Collections.Generic;
using Microsoft.Xna.Framework;

/////////////////////////////////////////////////////////////////////////////
namespace FreeSpace.Logic
{
    /////////////////////////////////////////////////////////////////////////
    public class AsteroidFieldControl
    {
        private List<AsteroidField> _fields;
        
        public delegate void Draw();

        public event Draw DrawField;
        
        public delegate void Update(GameTime gameTime);

        public event Update UpdateField;

        /////////////////////////////////////////////////////////////////////
        public AsteroidFieldControl(int fieldCount)
        {
            _fields = new List<AsteroidField>(fieldCount);
        }

        /////////////////////////////////////////////////////////////////////
        public List<AsteroidField> Fields
        {
            get { return _fields; }
            set { _fields = value; }                                                   
        }

        /////////////////////////////////////////////////////////////////////
        public void Add(AsteroidField field)
        {
            _fields.Add(field);
            field.InitParentControl(this);
        }

        /////////////////////////////////////////////////////////////////////
        public void CallDrawEvent()
        {
            if (DrawField != null)
            {
                DrawField();
            }
        }

        /////////////////////////////////////////////////////////////////////
        public void CallUpdateEvent(GameTime gameTime)
        {
            if (UpdateField != null)
            {
                UpdateField(gameTime);
            }
        }

        /////////////////////////////////////////////////////////////////////
        public void InitFields()
        {
            foreach (AsteroidField field in _fields)
            {
                field.InitField();
            }
        }
    }                                                                                         
/////////////////////////////////////////////////////////////////////////////
}//FreeSpace.Logic
                                                                             